/*     */ package com.bj58.analysis.tools;
/*     */ 
/*     */ import com.bj58.analysis.tools.common.CookieIdUtils;
/*     */ import com.bj58.analysis.tools.common.EncryptHelper;
/*     */ import com.bj58.analysis.tools.common.GetObjectToClassUtils;
/*     */ import com.bj58.analysis.tools.common.TrackUrlUtils;
/*     */ import com.bj58.analysis.tools.common.URLDecodeUtils;
/*     */ import com.bj58.analysis.tools.common.bean.LogBean;
/*     */ import com.bj58.analysis.tools.original.bean.OriginalTrackBean;
/*     */ import java.net.URLDecoder;
/*     */ import java.util.HashMap;
/*     */ import java.util.Map;
/*     */ import java.util.StringTokenizer;
/*     */ import java.util.regex.Matcher;
/*     */ import java.util.regex.Pattern;
/*     */ import net.sf.json.JSONObject;
/*     */ import org.apache.commons.lang.StringUtils;
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ public class OriginalTrackAnalysis
/*     */   extends CommonAnalysis
/*     */ {
/*     */   protected LogBean analysis(String logLine)
/*     */   {
/*  31 */     OriginalTrackBean bean = null;
/*  32 */     if (StringUtils.isNotBlank(logLine)) {
/*  33 */       String[] logs = logLine.split("\"");
/*  34 */       if (logs.length >= 4) {
/*  35 */         Map<String, String> map = new HashMap();
/*  36 */         String[] preStr = logs[0].split(" ", -1);
/*  37 */         if (preStr.length >= 3) {
/*  38 */           String cookieId = preStr[0];
/*  39 */           if ((StringUtils.isBlank(cookieId)) || (cookieId.equals("-"))) {
/*  40 */             cookieId = CookieIdUtils.getCookieIdOfRand();
/*     */           }
/*  42 */           map.put("cookieID", cookieId);
/*  43 */           map.put("epoch", preStr[1].trim());
/*  44 */           map.put("userIp", preStr[2].trim());
/*     */         }
/*     */         
/*     */ 
/*  48 */         String[] requestStrs = logs[0].split("empty.js.gif\\?");
/*  49 */         if (requestStrs.length >= 2) {
/*  50 */           String requestStr = requestStrs[1].split(" ")[0].trim();
/*  51 */           parserRequestStr(requestStr, map);
/*     */         }
/*     */         
/*     */ 
/*  55 */         String status = logs[1].trim();
/*  56 */         if (StringUtils.isNotBlank(status)) {
/*  57 */           map.put("status", status);
/*     */         }
/*     */         
/*  60 */         String url = logs[3].trim();
/*     */         
/*  62 */         if (StringUtils.isNotBlank(url)) {
/*  63 */           parserUrl(url, map);
/*     */         }
/*     */         
/*  66 */         if (logs.length - 4 >= 0) {
/*  67 */           String ua = logs[(logs.length - 4)];
/*  68 */           if (StringUtils.isNotBlank(ua)) {
/*  69 */             map.put("userAgent", ua);
/*     */           }
/*     */         }
/*     */         
/*     */ 
/*  74 */         String[] loginUids = logs[(logs.length - 1)].split("\\|", 2);
/*  75 */         if (loginUids.length == 2) {
/*  76 */           String loginUid = loginUids[1].trim();
/*  77 */           if ((StringUtils.isNotBlank(loginUid)) && (!loginUid.equals("-")))
/*     */           {
/*  79 */             map.put("loginUid", loginUid);
/*     */           }
/*     */         }
/*  82 */         if ((map != null) && (map.size() != 0)) {
/*  83 */           Object obj = GetObjectToClassUtils.getObjectByMap(OriginalTrackBean.class, map);
/*     */           
/*  85 */           if (obj != null) {
/*  86 */             bean = (OriginalTrackBean)obj;
/*     */           }
/*     */         }
/*     */       }
/*     */     }
/*     */     
/*  92 */     return bean;
/*     */   }
/*     */   
/*     */   private void parserUrl(String url, Map<String, String> map)
/*     */   {
/*  97 */     if (StringUtils.isNotBlank(url)) {
/*     */       try {
/*  99 */         url = URLDecodeUtils.parser(url);
/*     */       } catch (Exception e) {
/* 101 */         url = URLDecodeUtils.getSearchEngines(url);
/*     */       }
/* 103 */       String inword = getWordByUrl(url);
/* 104 */       if (StringUtils.isBlank(inword))
/*     */       {
/* 106 */         String referer = (String)map.get("referrer");
/* 107 */         if (StringUtils.isNotBlank(referer)) {
/* 108 */           inword = getWordByUrl(referer);
/* 109 */           if (StringUtils.isNotBlank(inword)) {
/* 110 */             map.put("inKWord", inword);
/*     */           }
/*     */         }
/*     */       } else {
/* 114 */         map.put("inKWord", inword);
/*     */       }
/* 116 */       map.put("url", url);
/*     */     }
/*     */   }
/*     */   
/*     */   private String getWordByUrl(String url)
/*     */   {
/* 122 */     String tmpWord = null;
/* 123 */     String domain = URLDecodeUtils.getSearchEngines(url);
/* 124 */     if (StringUtils.isNotBlank(domain)) {
/* 125 */       String pattern = "(key=)[^&]+";
/* 126 */       Pattern p_a = Pattern.compile(pattern, 2);
/* 127 */       Matcher m_a = p_a.matcher(url);
/* 128 */       while (m_a.find()) {
/* 129 */         String a = m_a.group();
/* 130 */         if (a.length() > 4) {
/* 131 */           a = a.substring(4, a.length());
/* 132 */           if (StringUtils.isNotBlank(a)) {
/* 133 */             tmpWord = a;
/* 134 */             break;
/*     */           }
/*     */         }
/*     */       }
/*     */     }
/* 139 */     return tmpWord;
/*     */   }
/*     */   
/*     */   private void parserRequestStr(String requestStr, Map<String, String> map)
/*     */   {
/* 144 */     if (StringUtils.isNotBlank(requestStr)) {
/* 145 */       StringTokenizer strRequestParameters = new StringTokenizer(requestStr, "&");
/*     */       
/* 147 */       while (strRequestParameters.hasMoreTokens()) {
/* 148 */         String tmpString = strRequestParameters.nextToken().trim();
/* 149 */         parserParam(tmpString, map);
/*     */       }
/*     */     }
/*     */   }
/*     */   
/*     */   private void parserParam(String param, Map<String, String> map)
/*     */   {
/* 156 */     if (getFlagOfParam(param, "site_name=")) {
/* 157 */       String tmpValue = getLastParam(param);
/* 158 */       if (StringUtils.isNotBlank(tmpValue)) {
/* 159 */         map.put("siteName", tmpValue);
/*     */       }
/* 161 */     } else if (getFlagOfParam(param, "version=")) {
/* 162 */       String tmpValue = getLastParam(param);
/* 163 */       if (StringUtils.isNotBlank(tmpValue)) {
/* 164 */         map.put("pageVersion", tmpValue);
/*     */       }
/* 166 */     } else if (getFlagOfParam(param, "post_count=")) {
/* 167 */       String tmpValue = getLastParam(param);
/* 168 */       if (StringUtils.isNotBlank(tmpValue)) {
/* 169 */         map.put("postCount", tmpValue);
/*     */       }
/* 171 */     } else if (getFlagOfParam(param, "window_size=")) {
/* 172 */       String tmpValue = getLastParam(param);
/* 173 */       if (StringUtils.isNotBlank(tmpValue)) {
/* 174 */         map.put("windowSize", tmpValue);
/*     */       }
/* 176 */     } else if (getFlagOfParam(param, "userid=")) {
/* 177 */       String tmpValue = getLastParam(param);
/* 178 */       if (StringUtils.isNotBlank(tmpValue)) {
/* 179 */         map.put("userId", tmpValue);
/*     */       }
/* 181 */     } else if (getFlagOfParam(param, "loadtime=")) {
/* 182 */       String tmpValue = getLastParam(param);
/* 183 */       if (StringUtils.isNotBlank(tmpValue)) {
/* 184 */         map.put("loadTime", tmpValue);
/*     */       }
/* 186 */     } else if (getFlagOfParam(param, "trackURL=")) {
/* 187 */       String tmpValue = getLastParam(param);
/* 188 */       if (StringUtils.isNotBlank(tmpValue)) {
/* 189 */         String trackUrl = parserTrackUrl(tmpValue, map);
/* 190 */         if (StringUtils.isNotBlank(trackUrl)) {
/* 191 */           map.put("trackUrl", trackUrl);
/*     */         }
/*     */       }
/* 194 */     } else if (getFlagOfParam(param, "_ga_utma=")) {
/* 195 */       String tmpValue = getLastParam(param);
/* 196 */       if (StringUtils.isNotBlank(tmpValue)) {
/* 197 */         map.put("gautma", tmpValue);
/*     */       }
/* 199 */     } else if (getFlagOfParam(param, "_trackParams=")) {
/* 200 */       String tmpValue = getLastParam(param);
/* 201 */       if (StringUtils.isNotBlank(tmpValue)) {
/*     */         try {
/* 203 */           tmpValue = URLDecoder.decode(tmpValue, "utf-8");
/* 204 */           map.put("unitParams", tmpValue);
/*     */         } catch (Exception e) {
/* 206 */           e.printStackTrace();
/*     */         }
/*     */       }
/* 209 */     } else if (getFlagOfParam(param, "smsc=")) {
/* 210 */       String tmpValue = getLastParam(param);
/* 211 */       if (StringUtils.isNotBlank(tmpValue)) {
/*     */         try {
/* 213 */           tmpValue = EncryptHelper.desDecrypt(tmpValue);
/* 214 */           map.put("queryParams", tmpValue);
/*     */         } catch (Exception e) {
/* 216 */           e.printStackTrace();
/*     */         }
/*     */       }
/* 219 */     } else if (getFlagOfParam(param, "referrer=")) {
/* 220 */       String tmpValue = getLastParam(param);
/* 221 */       if (StringUtils.isNotBlank(tmpValue)) {
/*     */         try {
/* 223 */           tmpValue = URLDecodeUtils.parser(tmpValue);
/*     */         } catch (Exception e) {
/* 225 */           tmpValue = URLDecodeUtils.getSearchEngines(tmpValue);
/*     */         }
/* 227 */         if (StringUtils.isNotBlank(tmpValue)) {
/* 228 */           map.put("referrer", tmpValue);
/*     */           
/* 230 */           String refdomain = URLDecodeUtils.getDomain(tmpValue);
/* 231 */           map.put("refDomain", refdomain);
/*     */         }
/*     */       }
/* 234 */     } else if (getFlagOfParam(param, "type=")) {
/* 235 */       String tmpValue = getLastParam(param);
/* 236 */       if (!map.containsKey("pageType")) {
/* 237 */         if (StringUtils.isNotBlank(tmpValue)) {
/* 238 */           map.put("pageType", tmpValue);
/*     */         } else {
/* 240 */           map.put("pageType", "other");
/*     */         }
/*     */       }
/* 243 */     } else if (getFlagOfParam(param, "supplycount.")) {
/* 244 */       String tmpValue = getLastParam(param);
/* 245 */       if (StringUtils.isNotBlank(tmpValue)) {
/* 246 */         String[] params = param.split("=", 2);
/* 247 */         String[] keys = params[0].split(".", 2);
/* 248 */         if (keys.length == 2) {
/* 249 */           String tmpKey = keys[1];
/* 250 */           String tmpSupplycount = (String)map.get("supplyCount");
/* 251 */           if (StringUtils.isNotBlank(tmpSupplycount)) {
/*     */             try {
/* 253 */               Map<String, String> tmpMap = new HashMap();
/* 254 */               tmpMap.put(tmpKey, tmpValue);
/* 255 */               JSONObject json = JSONObject.fromObject(tmpSupplycount);
/*     */               
/* 257 */               json.putAll(tmpMap);
/* 258 */               map.put("supplyCount", json.toString());
/*     */             } catch (Exception e) {
/* 260 */               e.printStackTrace();
/*     */             }
/*     */           } else {
/*     */             try {
/* 264 */               Map<String, String> tmpMap = new HashMap();
/* 265 */               tmpMap.put(tmpKey, tmpValue);
/* 266 */               JSONObject json = JSONObject.fromObject(tmpMap);
/* 267 */               map.put("supplyCount", json.toString());
/*     */             } catch (Exception e) {
/* 269 */               e.printStackTrace();
/*     */             }
/*     */           }
/*     */         }
/*     */       }
/*     */     }
/*     */   }
/*     */   
/*     */   private String parserTrackUrl(String trackUrl, Map<String, String> map)
/*     */   {
/* 279 */     String tmpline = null;
/* 280 */     trackUrl = TrackUrlUtils.formatTrackUrl(trackUrl);
/* 281 */     if (StringUtils.isNotBlank(trackUrl)) {
/* 282 */       JSONObject obj = null;
/*     */       try {
/* 284 */         obj = JSONObject.fromObject(trackUrl);
/*     */       } catch (Exception e) {
/* 286 */         return null;
/*     */       }
/*     */       
/* 289 */       if (obj != null) {
/* 290 */         boolean flag = obj.containsKey("init_refer");
/* 291 */         if (flag) {
/* 292 */           String init_refer = obj.getString("init_refer");
/* 293 */           if (StringUtils.isNotBlank(init_refer)) {
/*     */             try {
/* 295 */               init_refer = URLDecodeUtils.parser(init_refer);
/*     */             } catch (Exception e) {
/* 297 */               init_refer = URLDecodeUtils.getSearchEngines(init_refer);
/*     */             }
/*     */             
/*     */ 
/* 301 */             String outWord = URLDecodeUtils.getWord(init_refer);
/* 302 */             if (StringUtils.isNotBlank(outWord)) {
/* 303 */               map.put("outWord", outWord);
/*     */             }
/* 305 */             obj.put("init_refer", init_refer);
/*     */           }
/*     */         }
/*     */         
/*     */ 
/* 310 */         boolean cateFlag = obj.containsKey("cate");
/* 311 */         if (cateFlag) {
/* 312 */           String catePath = obj.getString("cate");
/* 313 */           if (StringUtils.isNotBlank(catePath)) {
/* 314 */             map.put("catePath", catePath);
/*     */           }
/*     */         }
/*     */         
/* 318 */         boolean areaFlag = obj.containsKey("area");
/* 319 */         if (areaFlag) {
/* 320 */           String areaPath = obj.getString("area");
/* 321 */           areaPath = URLDecodeUtils.parser(areaPath);
/* 322 */           if (StringUtils.isNotBlank(areaPath)) {
/* 323 */             if (areaPath.contains("?"))
/* 324 */               areaPath = "";
/* 325 */             obj.put("area", areaPath);
/* 326 */             map.put("areaPath", areaPath);
/*     */           }
/*     */         }
/*     */         
/*     */ 
/* 331 */         boolean infoidFlag = obj.containsKey("infoid");
/* 332 */         if (infoidFlag) {
/* 333 */           String infoId = obj.getString("infoid");
/* 334 */           if (StringUtils.isNotBlank(infoId)) {
/* 335 */             map.put("infoId", infoId);
/*     */           }
/*     */         }
/*     */         
/* 339 */         boolean infotypeFlag = obj.containsKey("infotype");
/* 340 */         if (infotypeFlag) {
/* 341 */           String infoType = obj.getString("infotype");
/* 342 */           if (StringUtils.isNotBlank(infoType)) {
/* 343 */             map.put("infoType", infoType);
/*     */           }
/*     */         }
/*     */         
/* 347 */         boolean usertypeFlag = obj.containsKey("usertype");
/* 348 */         if (usertypeFlag) {
/* 349 */           String userType = obj.getString("usertype");
/* 350 */           if (StringUtils.isNotBlank(userType)) {
/* 351 */             map.put("userType", userType);
/*     */           }
/*     */         }
/*     */         
/* 355 */         boolean pageTypeFlag = obj.containsKey("pagetype");
/* 356 */         if (pageTypeFlag) {
/* 357 */           String pageType = obj.getString("pagetype");
/* 358 */           if (StringUtils.isNotBlank(pageType)) {
/* 359 */             map.put("pageType", pageType);
/*     */           }
/*     */         }
/*     */         
/* 363 */         tmpline = obj.toString();
/* 364 */         tmpline = tmpline.replaceAll("'", "");
/* 365 */         tmpline = tmpline.replaceAll("\"", "'");
/*     */       }
/*     */     }
/* 368 */     return tmpline;
/*     */   }
/*     */   
/*     */   private boolean getFlagOfParam(String param, String paramName)
/*     */   {
/* 373 */     return (param.indexOf(paramName) == 0) && (!param.equals(paramName));
/*     */   }
/*     */   
/*     */   private String getLastParam(String param)
/*     */   {
/* 378 */     String tmpParam = null;
/* 379 */     if (StringUtils.isNotBlank(param)) {
/* 380 */       String[] params = param.split("=", 2);
/* 381 */       if ((params.length == 2) && (StringUtils.isNotBlank(params[1])) && (!params[1].equals("NA")))
/*     */       {
/* 383 */         tmpParam = params[1]; }
/*     */     }
/* 385 */     return tmpParam;
/*     */   }
/*     */ }


/* Location:              C:\Users\zhaoxiang\Desktop\basestat_log_common_tools-0.3.jar!\com\bj58\analysis\tools\OriginalTrackAnalysis.class
 * Java compiler version: 5 (49.0)
 * JD-Core Version:       0.7.1
 */